﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Twodi.Structs;
using System.ComponentModel;

namespace Twodi.Interfaces
{
    /// <summary>
    /// Define um componente que possui animação.
    /// </summary>
    public interface IAnimation
    {
        /// <summary>
        /// Adicionar animações na lista de animações.
        /// </summary>
        /// <param name="Animations">Animation(s) a ser adicionado.</param>
        void Add(params Animation[] animations);

        /// <summary>
        /// Recuperar animação por nome.
        /// </summary>
        /// <param name="AnimationName">Nome do Animation.</param>
        /// <returns></returns>
        Animation Search(String animationName);

        /// <summary>
        /// Remover animação por nome.
        /// </summary>
        /// <param name="AnimationName">Nome do Animation.</param>
        void Remove(String animationName);

        /// <summary>
        /// Atual index da animação do componente.
        /// </summary>
        int AnimationIndex
        {
            get;
            set;
        }

        /// <summary>
        /// Atual animação do componente.
        /// </summary>
        Animation Animation
        {
            get;
        }

        /// <summary>
        /// Lista de animações.
        /// </summary>
        BindingList<Animation> Animations
        {
            get;
        }

        /// <summary>
        /// Nome da atual animação do componente.
        /// </summary>
        String Name
        {
            get;
            set;
        }

        event EventHandler AnimationIndexChanged;

        event EventHandler AnimationChanged;

        event EventHandler AnimationListChanged;
    }
}
